package gui;

import ge.usuarios.Aluno;
import ge.util.Validadores;

import java.awt.Color;
import javax.swing.*;
import javax.swing.border.BevelBorder;

import java.awt.Component;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * cadastraAlunoPanel.java
 *
 * Created on 05/11/2010, 17:16:51
 */

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
/**
 *
 * @author Marcelo Rolim
 */
public class CadastraAlunoPanel extends javax.swing.JPanel {

    private String nome;
    private String endereco;
    private String nomePai;
    private String nomeMae;
    private String email;
    private int idade = 0;
    private boolean flag = true;
    Color verde = new Color(0,150,0);

    /** Creates new form cadastraAlunoPanel */
    public CadastraAlunoPanel() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

    	this.setLayout(null);
    	this.setBackground(new java.awt.Color(204,204,255));
    	
        jLabel1 = new javax.swing.JLabel();
        this.add(jLabel1);
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        caixaMatricula = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        caixaNome = new javax.swing.JTextField();
        caixaIdade = new javax.swing.JTextField();
        caixaEndereco = new javax.swing.JTextField();
        caixaNomePai = new javax.swing.JTextField();
        caixaNomeMae = new javax.swing.JTextField();
        caixaEmail = new javax.swing.JTextField();
        checagemNome = new javax.swing.JLabel();
        checagemIdade = new javax.swing.JLabel();
        checagemEndereco = new javax.swing.JLabel();
        checagemPai = new javax.swing.JLabel();
        checagemMae = new javax.swing.JLabel();
        checagemEmail = new javax.swing.JLabel();
        buttonCadastrar = new javax.swing.JButton();
        this.add(buttonCadastrar);
        buttonLimpar = new javax.swing.JButton();
        this.add(buttonLimpar);
        buttonCancelar = new javax.swing.JButton();
        this.add(buttonCancelar);
        this.add(checagemIdade);
        this.add(checagemEndereco);
        this.add(checagemPai);
        this.add(checagemMae);
        this.add(checagemEmail);
        this.add(checagemNome);
        this.add(caixaMatricula);
        this.add(caixaNomeMae);
        this.add(caixaNomePai);
        this.add(caixaEndereco);
        this.add(caixaIdade);
        this.add(caixaNome);
        this.add(caixaEmail);
        this.add(jLabel9);
        this.add(jLabel4);
        this.add(jLabel3);
        this.add(jLabel6);
        this.add(jLabel5);
        this.add(jLabel7);
        this.add(jLabel2);

        setPreferredSize(new java.awt.Dimension(800, 600));

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 48));
        jLabel1.setText("Cadastrar aluno");
        jLabel1.setBounds(229, 25, 333, 58);
        jLabel1.setForeground(new java.awt.Color(0,102,102));

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 24));
        jLabel2.setText("Nome");
        jLabel2.setBounds(99, 148, 62, 29);
        jLabel2.setForeground(new java.awt.Color(0,102,102));
        {
        	jLabel10 = new JLabel();
        	this.add(jLabel10);
        	jLabel10.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
        	jLabel10.setBounds(1, 103, 797, 496);
        }

        jLabel3.setFont(new java.awt.Font("Tahoma", 0, 24));
        jLabel3.setText("Idade");
        jLabel3.setBounds(100, 202, 61, 29);
        jLabel3.setForeground(new java.awt.Color(0,102,102));

        jLabel4.setFont(new java.awt.Font("Tahoma", 0, 24));
        jLabel4.setText("Endereco");
        jLabel4.setBounds(63, 256, 98, 29);
        jLabel4.setForeground(new java.awt.Color(0,102,102));

        jLabel5.setFont(new java.awt.Font("Tahoma", 0, 24));
        jLabel5.setText("Nome do Pai");
        jLabel5.setBounds(26, 310, 135, 29);
        jLabel5.setForeground(new java.awt.Color(0,102,102));

        jLabel6.setFont(new java.awt.Font("Tahoma", 0, 24));
        jLabel6.setText("Nome da Mae");
        jLabel6.setBounds(12, 364, 149, 29);
        jLabel6.setForeground(new java.awt.Color(0,102,102));

        jLabel7.setFont(new java.awt.Font("Tahoma", 0, 24));
        jLabel7.setText("E-mail");
        jLabel7.setBounds(96, 418, 65, 29);
        jLabel7.setForeground(new java.awt.Color(0,102,102));

        caixaMatricula.setBackground(new java.awt.Color(255, 255, 255));
        caixaMatricula.setFont(new java.awt.Font("Tahoma",0,18)); // NOI18N
        caixaMatricula.setText(" ");
        caixaMatricula.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        caixaMatricula.setOpaque(true);
        caixaMatricula.setBounds(179, 469, 179, 31);
        caixaMatricula.setForeground(new java.awt.Color(102,102,102));

        jLabel9.setFont(new java.awt.Font("Tahoma", 0, 24));
        jLabel9.setText("Matricula");
        jLabel9.setBounds(65, 469, 96, 29);
        jLabel9.setForeground(new java.awt.Color(0,102,102));

        caixaNome.setFont(new java.awt.Font("Tahoma",0,18));
        caixaNome.setBounds(179, 145, 537, 36);
        caixaNome.setLayout(null);
        caixaNome.setForeground(new java.awt.Color(102,102,102));
        caixaNome.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                caixaNomeKeyReleased(evt);
            }
        });

        caixaIdade.setFont(new java.awt.Font("Tahoma",0,18));
        caixaIdade.setBounds(179, 199, 537, 36);
        caixaIdade.setLayout(null);
        caixaIdade.setForeground(new java.awt.Color(102,102,102));
        caixaIdade.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                caixaIdadeKeyReleased(evt);
            }
        });

        caixaEndereco.setFont(new java.awt.Font("Tahoma",0,18));
        caixaEndereco.setBounds(179, 253, 537, 36);
        caixaEndereco.setLayout(null);
        caixaEndereco.setForeground(new java.awt.Color(102,102,102));
        caixaEndereco.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                caixaEnderecoKeyReleased(evt);
            }
        });

        caixaNomePai.setFont(new java.awt.Font("Tahoma",0,18));
        caixaNomePai.setBounds(179, 307, 537, 36);
        caixaNomePai.setLayout(null);
        caixaNomePai.setForeground(new java.awt.Color(102,102,102));
        caixaNomePai.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                caixaNomePaiKeyReleased(evt);
            }
        });

        caixaNomeMae.setFont(new java.awt.Font("Tahoma",0,18));
        caixaNomeMae.setBounds(179, 359, 537, 36);
        caixaNomeMae.setLayout(null);
        caixaNomeMae.setForeground(new java.awt.Color(102,102,102));
        caixaNomeMae.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                caixaNomeMaeKeyReleased(evt);
            }
        });

        caixaEmail.setFont(new java.awt.Font("Tahoma",0,18));
        caixaEmail.setBounds(179, 415, 537, 36);
        caixaEmail.setLayout(null);
        caixaEmail.setForeground(new java.awt.Color(102,102,102));
        caixaEmail.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                caixaEmailKeyReleased(evt);
            }
        });

        checagemNome.setFont(new java.awt.Font("Tahoma",0,14));
        checagemNome.setBounds(728, 151, 65, 28);
        checagemNome.setText(" ");

        checagemIdade.setFont(new java.awt.Font("Tahoma",0,14));
        checagemIdade.setBounds(728, 208, 65, 23);
        checagemIdade.setText(" ");

        checagemEndereco.setFont(new java.awt.Font("Tahoma",0,14));
        checagemEndereco.setBounds(728, 262, 67, 24);
        checagemEndereco.setText(" ");

        checagemPai.setFont(new java.awt.Font("Tahoma",0,14));
        checagemPai.setBounds(728, 316, 65, 24);
        checagemPai.setText(" ");

        checagemMae.setFont(new java.awt.Font("Tahoma",0,14)); // NOI18N
        checagemMae.setBounds(728, 370, 66, 23);
        checagemMae.setText(" ");

        checagemEmail.setFont(new java.awt.Font("Tahoma",0,14));
        checagemEmail.setBounds(728, 424, 65, 24);
        checagemEmail.setText(" ");

        buttonCadastrar.setText("CADASTRAR");
        buttonCadastrar.setBounds(370, 539, 103, 30);
        buttonCadastrar.setSize(112, 25);
        buttonCadastrar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
        buttonCadastrar.setBackground(new java.awt.Color(255,255,255));
        buttonCadastrar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                try {
					buttonCadastrarMouseClicked(evt);
				} catch (Exception e) {
					e.printStackTrace();
				}
            }
        });

        buttonLimpar.setText("LIMPAR");
        buttonLimpar.setBounds(507, 539, 103, 30);
        buttonLimpar.setSize(112, 25);
        buttonLimpar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
        buttonLimpar.setBackground(new java.awt.Color(255,255,255));
        buttonLimpar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                buttonLimparMouseClicked(evt);
            }
        });

        buttonCancelar.setText("CANCELAR");
        buttonCancelar.setBounds(644, 539, 103, 30);
        buttonCancelar.setSize(112, 25);
        buttonCancelar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
        buttonCancelar.setBackground(new java.awt.Color(255,255,255));
        buttonCadastrar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                try {
                	buttonCancelarMouseClicked(evt);
				} catch (Exception e) {
					e.printStackTrace();
				}
            }
        });

    }// </editor-fold>

    private void caixaNomeKeyReleased(java.awt.event.KeyEvent evt) {                                      
        nome = caixaNome.getText();
        if (nome.replace(" ", "").equals("") || nome == null) {
            checagemNome.setText("");
            checagemNome.setForeground(Color.white);
            flag = false;
        } else if (Validadores.validaNome(nome)) {
            checagemNome.setText("OK");
            checagemNome.setForeground(verde);
            flag = true;
        } else {
            checagemNome.setText("INVALIDO");
            checagemNome.setForeground(Color.red);
            flag = false;
        }
    }                                     

    private void caixaIdadeKeyReleased(java.awt.event.KeyEvent evt) {                                       
        String stringIdade = caixaIdade.getText();
        Pattern padrao = Pattern.compile("[0-9]*");
        Matcher meta = padrao.matcher(stringIdade);
        if (stringIdade.equals("") || stringIdade == null || !meta.matches()) {
            checagemIdade.setText("");
            checagemIdade.setForeground(Color.white);
        } else if (Integer.parseInt(stringIdade) <= 0) {
            checagemIdade.setText("INVALIDO");
            checagemIdade.setForeground(Color.red);
            idade = Integer.parseInt(stringIdade);
            flag = true;
        } else {
            checagemIdade.setText("OK");
            checagemIdade.setForeground(verde);
            flag = false;
        }

    }                                      

    private void caixaEnderecoKeyReleased(java.awt.event.KeyEvent evt) {                                          
        endereco = caixaEndereco.getText();
        if (endereco.equals("") || endereco == null) {
            checagemEndereco.setText("");
            checagemEndereco.setForeground(Color.white);
            flag = false;
        } else if (Validadores.validaEndereco(endereco)) {
            checagemEndereco.setText("OK");
            checagemEndereco.setForeground(verde);
            flag = true;
        } else {
            checagemEndereco.setText(endereco);
            checagemEndereco.setForeground(Color.red);
            flag = false;
        }
    }                                         

    private void caixaNomePaiKeyReleased(java.awt.event.KeyEvent evt) {                                         
        nomePai = caixaNomePai.getText();
        if (nomePai.equals("") || nomePai == null) {
            checagemPai.setText("");
            checagemPai.setForeground(Color.white);
            flag = false;
        } else if (Validadores.validaNome(nomePai)) {
            checagemPai.setText("OK");
            checagemPai.setForeground(verde);
            flag = true;
        } else {
            checagemPai.setText("INVALIDO");
            checagemPai.setForeground(Color.red);
            flag = false;
        }
    }                                        

    private void caixaNomeMaeKeyReleased(java.awt.event.KeyEvent evt) {                                         
        nomeMae = caixaNomeMae.getText();
        if (nomeMae.equals("") || nomeMae == null) {
            checagemMae.setText("");
            checagemMae.setForeground(Color.white);
            flag = false;
        } else if (Validadores.validaNome(nomeMae)) {
            checagemMae.setText("OK");
            checagemMae.setForeground(verde);
            flag = true;
        } else {
            checagemMae.setText("INVALIDO");
            checagemMae.setForeground(Color.red);
            flag = false;
        }
    }                                        

    private void caixaEmailKeyReleased(java.awt.event.KeyEvent evt) {                                       
        email = caixaEmail.getText();
        if (email.equals("") || email == null) {
            checagemEmail.setText("");
            checagemEmail.setForeground(Color.white);
            flag = false;
        } else if (Validadores.validaEmail(email)) {
            checagemEmail.setText("OK");
            checagemEmail.setForeground(verde);
            flag = true;
        } else {
            checagemEmail.setText("INVALIDO");
            checagemEmail.setForeground(Color.red);
            flag = false;
        }
    }                                      

    private void limpar(){
    	for(Component component: this.getComponents()){
            if(component instanceof JTextField){
                JTextField caixa = (JTextField)component;
                caixa.setText("");
            }
        }
    	checagemEmail.setText("");
    	checagemMae.setText("");
    	checagemPai.setText("");
    	checagemEndereco.setText("");
    	checagemIdade.setText("");
    	checagemNome.setText("");
    }
    
    private void buttonLimparMouseClicked(java.awt.event.MouseEvent evt) {
        limpar();
    }                                         

    private void buttonCadastrarMouseClicked(java.awt.event.MouseEvent evt) throws Exception {
    	if(flag == false){
    		JOptionPane.showMessageDialog(null, "Algum dado invalido");
    	}else{
    		Aluno aluno = new Aluno(nome, idade, endereco, nomePai, nomeMae, email);
    		GerenciadorDeJanelas.todosAlunos.add(aluno);
    		String matricula = aluno.getMatriculaDoAluno();
    		
    		JOptionPane.showMessageDialog(null, "Matricula do aluno: " + matricula);
    		
    		String xml = GerenciadorDeJanelas.ARQUIVADOR.toXML(GerenciadorDeJanelas.todosAlunos);
			GerenciadorDeJanelas.gravar(GerenciadorDeJanelas.arquivoDeAlunos,xml);
    		
    		GerenciadorDeJanelas.window.setVisible(false);
    		GerenciadorDeJanelas.window.setContentPane(GerenciadorDeJanelas.primeiroMenu);
    		GerenciadorDeJanelas.window.setVisible(true);
    	}       
    }    
    
    private void buttonCancelarMouseClicked(java.awt.event.MouseEvent evt) {
        limpar();
        GerenciadorDeJanelas.window.setContentPane(GerenciadorDeJanelas.menuCadastra);
        GerenciadorDeJanelas.window.setVisible(true);
    } 
    // Variables declaration - do not modify
    private javax.swing.JButton buttonCadastrar;
    private javax.swing.JButton buttonCancelar;
    private javax.swing.JButton buttonLimpar;
    private javax.swing.JTextField caixaEmail;
    private javax.swing.JTextField caixaEndereco;
    private javax.swing.JTextField caixaIdade;
    private javax.swing.JLabel caixaMatricula;
    private javax.swing.JTextField caixaNome;
    private JLabel jLabel10;
    private javax.swing.JTextField caixaNomeMae;
    private javax.swing.JTextField caixaNomePai;
    private javax.swing.JLabel checagemEmail;
    private javax.swing.JLabel checagemEndereco;
    private javax.swing.JLabel checagemIdade;
    private javax.swing.JLabel checagemMae;
    private javax.swing.JLabel checagemNome;
    private javax.swing.JLabel checagemPai;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel9;
    // End of variables declaration
}               